package com.nowcoder.community.dao;

import com.nowcoder.community.entity.Message;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * @author 韩
 * @version 1.0
 * 注意会话和私信的区别，刚进入消息页面是一条条的会话，会话会显示最近一条的私信
 * 私信是点进会话之内看到的信息
 */
@Mapper
public interface MessageMapper {

    //查询该用户所有的会话，每个会话会显示最近一条私信
    List<Message> selectConversations(int userId, int offset, int limit);

    //查询当前用户会话的数量
    int selectConversationsCount(int userId);

    //查询当前会话的所有私信列表
    List<Message> selectLetters(String conversationId, int offset, int limit);

    //查询当前会话所有私信的数量
    int selectLettersCount(String conversationId);

    //查询当前用户所有的未读私信数量和某个会话的未读私信数量
    int selectLettersUnReadCount(int userId, String conversationId);

    //新增消息
    int insertMessage(Message message);

    //修改消息状态
    int updateStatus(List<Integer> ids, int status);

    //查询某个通知最新的消息
    Message selectLatestNotice(String topic, int userId);

    //查询某个通知消息的数量
    int selectNoticeCount(String topic, int userId);

    /**
     * 查询某个通知未读的消息数量
     *
     * @param topic：传入null值，查询所有通知的未读消息数，有值即某个通知的未读消息数
     * @param userId
     * @return
     */
    int selectNoticeUnreadCount(String topic, int userId);

    List<Message> selectNotices(String topic, int userId, int offset, int limit);

}